//: control/LabeledFor.java
// For loops with "labeled break" and "labeled continue."
package control;

import static net.mindview.util.Print.*;

public class LabeledFor
{
    public static void main(String[] args)
    {
        int i = 0;
        outer:
        // Can't have statements here
        for (; true;)
        { // infinite loop
            inner:
            // Can't have statements here
            for (; i < 10; i++)
            {
                print("i = " + i);
                if (i == 2)
                {
                    print("continue");
                    continue;
                }
                if (i == 3)
                {
                    print("break");
                    i++; // Otherwise i never
                    // gets incremented.
                    break;
                }
                if (i == 7)
                {
                    print("continue outer");
                    i++; // Otherwise i never
                    // gets incremented.
                    continue outer;
                }
                if (i == 8)
                {
                    print("break outer");
                    break outer;
                }
                for (int k = 0; k < 5; k++)
                {
                    if (k == 3)
                    {
                        print("continue inner");
                        continue inner;
                    }
                }
            }
        }
        // Can't break or continue to labels here
    }
} /*
   * Output: i = 0 continue inner i = 1 continue inner i = 2 continue i = 3 break i = 4 continue inner i = 5 continue
   * inner i = 6 continue inner i = 7 continue outer i = 8 break outer
   */// :~
